Estoy ejecutando la última versión de Docker Apple Silicon Preview. Creé el contenedor/imágenes del tutorial y funciona bien. Cuando fui a crear un archivo YAML personalizado y ejecuté docker-compose, aparece el siguiente error al extraer mysql:
ERROR: no hay un manifiesto coincidente para linux/arm64/v8 en las entradas de la lista de manifiestos
Aquí hay un fragmento de mi archivo YAMl:
version: '3' services: # Database db: image: mysql-server:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: pass MYSQL_DATABASE: wp MYSQL_USER: wp MYSQL_PASSWORD: wp networks: - wpsiteProbé :latest y :8 que dan como resultado el mismo error. Tira bien de phpmyadmin y wordpress.
De esta respuesta , agregué esto a mi docker-compose.override.yml local
services: mysql: platform: linux/amd64 ports:Para cualquiera que tenga dificultades para que funcione con una versión específica, lo siguiente no funcionó para mí:
docker run --platform linux/x86_64 mysql:5.7.26 -e MYSQL_ROOT_PASSWORD=passpero esto hizo:
docker run --platform linux/x86_64 mysql:5.7 -e MYSQL_ROOT_PASSWORD=passmismo problema para m1 mac solo ejecuta este comando
docker pull --platform linux/x86_64 mysqlOracle mantiene una imagen docker de MySQL 8.0.23 para arm64.
https://hub.docker.com/r/mysql/mysql-server
Para usarlo en su archivo docker-compose
version: "3.8" services: mysql: container_name: mycontainername image: mysql/mysql-server:8.0.23 ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mydatabasename MYSQL_ROOT_HOST: "%" command: --lower_case_table_names=1Consulte el siguiente enlace para conocer los problemas conocidos. En la terminal de tu Mac, ejecuta
softwareupdate --install-rosettay luego en docker-compose tener algo similar a
mysql_gdpr: platform: linux/x86_64 image: mysql/mysql-server:8.0.23 ports: - "3306:3306" environment: MYSQL_DATABASE: "user_security" MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_USER: "security" MYSQL_PASSWORD: "pleasechangeit"Bueno, técnicamente no resolverá su problema (ejecutar MySQL en ARM), pero por el momento, podría agregar una platform a su servicio como:
services: db: platform: linux/x86_64 image: mysql:5.7 ...Alternativamente, considere usar MariaDB, que debería funcionar como un reemplazo directo como, por ejemplo, este:
services: db: image: mariadb:10.5.8 ...Ambas formas funcionan para mí en M1 con Docker Preview
Tuve un problema similar, resuelto con esta línea en mi dockerfile:
antes de
FROM ubuntu:18.04después
FROM --platform=linux/x86_64 ubuntu:18.04Tenga en cuenta que al usar --platform linux/x86_64 en arm64/v8, es posible que pierda la compatibilidad con Linux Native AIO .
Consulte los registros del contenedor docker:
[ERROR] [MY-012585] [InnoDB] Linux Native AIO interface is not supported on this platform. Please check your OS documentation and install appropriate binary of InnoDB. [Warning] [MY-012654] [InnoDB] Linux Native AIO disabled.Considere usar mysql/mysql-server en su lugar, ya que tiene soporte arm64/v8 listo para usar.
Este repositorio de Github permite construir una imagen MySQL 5.7 aarch64.
Construyéndolo con el siguiente comando (nombrándolo igual que la imagen mysql:5.7 oficial), se usará de forma predeterminada en todas las configuraciones de docker-compose o Dockerfiles que especifiquen mysql:5.7.
docker build -t mysql:5.7 .Significa que ya no tendrá actualizaciones del repositorio oficial de MySQL Dockerhub, pero como reemplazo temporal lo encuentro útil.
puede intentar iniciar/ejecutar un contenedor (para mac m1)
docker run -d -p 3306:3306 --name mysql --platform linux/x86_64 --env MYSQL_ROOT_PASSWORD=12345 mysqlDocker en su documentación oficial dice:
No todas las imágenes están disponibles para la arquitectura ARM64. Puede agregar
--platform linux/amd64para ejecutar una imagen Intel bajo emulación. En particular, la imagen mysql no está disponible para ARM64. Puede solucionar este problema utilizando una imagen de mariadb.
(fuente aquí )
Entonces, lo que debe hacer para que su proyecto funcione es agregar platform: linux/amd64 a su docker-compose.yml.
Se vería como:
services: mysql: image: mysql:5.7 platform: linux/amd64 ...Como puedes imaginar, probablemente el rendimiento no será el mismo.
Los intentos de ejecutar contenedores x86 en máquinas M1 bajo emulación pueden bloquearse. Incluso cuando los contenedores se ejecutan correctamente en la emulación, serán más lentos y usarán más memoria que el equivalente nativo. Desde aquíhttps://docs.docker.com/desktop/mac/apple-silicon/#known-issues